supernova: fix for small audio vector sizes
[supercollider.git] / examples / pieces / Record Scratcher.scd
blobb5e46838518012621d3777301f233b784e4bdb4c
1 // Josh Parmenter (2007)
2 // record scratcher
4 SynthDef(\scratch, {arg gate = 1, buffer;
5         var buf, speed, env;
6         env = EnvGen.kr(
7                 Env([0,1,0], [0.1, 0.1], \sin, 1),
8                 gate, doneAction: 20);
9         speed = MouseX.kr(-10, 10);
10         speed = speed - DelayN.kr(speed, 0.1, 0.1);
11         speed = MouseButton.kr(1, 0, 0.3) + speed ;
12         buf = PlayBuf.ar(1, buffer, speed * BufRateScale.kr(buffer), loop: 1);
13         Out.ar(0, (buf * env).dup );
14 }).add;
15         
16 s.boot;
18 // path to a mono soundfile here
19 a = Buffer.read(s, "sounds/a11wlk01.wav");
21 b = Synth(\scratch, [\buffer, a]);
23 // move mouse to scrub the record.
24 // press mouse button to 'stop the record', you can scrub while it is stopped.
26 // stop the synth
27 b.set(\gate, 0);
28 // free the Buffer
29 a.free;